/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Controladores;
import javax.swing.*;
import java.util.*;
import Beans.Cliente;
import Beans.Proveedor;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;


/**
 *Esta clase sirve como controlador de la clase Proveedor y aqui
 * se registra, modifica, consulta y elimina
 * @author Ingenieros de sistemas III semestre
 */

public class Mcliente {

     File archivo=new File("D:\\persistencia\\Clientes.dat");

    public void grabar() throws IOException {

      FileOutputStream   flujoSalida  = new FileOutputStream(archivo);
      ObjectOutputStream objetoSalida = new ObjectOutputStream(flujoSalida);
      objetoSalida.writeObject(this.getListacliente());
      objetoSalida.close();
     }


    public void restaurar() throws IOException,ClassNotFoundException {

 	FileInputStream flujoEntrada    = new FileInputStream(archivo);
  	ObjectInputStream objetoEntrada = new ObjectInputStream(flujoEntrada);
  	List<Cliente> lcl = (List) objetoEntrada.readObject();
  	this.setListacliente(lcl);
        objetoEntrada.close();
    }

 private List<Cliente> listacliente = new LinkedList<Cliente>(); //creacion de la lista

    public List<Cliente> getListacliente() {
        return listacliente;
    }

    public void setListacliente(List<Cliente> listacliente) {
        this.listacliente = listacliente;
    }
  Cliente cl = new Cliente(); //creacion de una instancia de cliente
  

  //Metodos (cruds)

    public boolean Existe(int ced){
        boolean con=false;
        Iterator itc=listacliente.iterator();
           while(itc.hasNext()){
              cl=(Cliente)itc.next();
              if(cl.getCedula()==ced){
                    con=true;
                }
            }
           return con;
        } //verificacion de la existencia

    public void Registrar(Cliente cl){
        if(!Existe(cl.getCedula())){
            listacliente.add(cl);
            JOptionPane.showMessageDialog(null,"EL cliente se ha registrado correctamente");
        }else{
            JOptionPane.showMessageDialog(null, "ESTE CLIENTE YA SE ENCUENTRA REGISTRADO","INFORMACION",JOptionPane.ERROR_MESSAGE);
        }
    } // registrar cliente

    public Cliente Consultar(int ced){
        Iterator itc=listacliente.iterator();
         while(itc.hasNext()){
            Cliente cli= (Cliente)itc.next();
            if(cli.getCedula()==ced){
               return cli;
            }else{
                JOptionPane.showMessageDialog(null,"cliente  no encontrado","Error",JOptionPane.ERROR_MESSAGE);
            }
         }
         return new Cliente();
    } //Consultar cliente

    public void Eliminar(int identificacion){
        Iterator itc=listacliente.iterator();
             while(itc.hasNext()){
            cl=(Cliente)itc.next();
            if(cl.getCedula()==identificacion){
                listacliente.remove(cl);
                JOptionPane.showMessageDialog(null,"Eliminado");
            }
        }
    } //Eliminar un cliente

    public void Modificar(int posi,int identificacion,Cliente cli){
        Iterator itc=listacliente.iterator();
         while(itc.hasNext()){
            cl = (Cliente)itc.next();
            if(cl.getCedula()==identificacion){
                listacliente.set(posi, cli);
                JOptionPane.showMessageDialog(null,"Los Datos se Guardaron "
                                                 + "Satisfactoriamente");
            }
        }
        } //Modificar un cliente

    
     public Cliente Recorrer(){
         Iterator it = listacliente.iterator();
         while(it.hasNext()){
             Cliente cli = (Cliente)it.next();
             return cli;
         }
         return new Cliente();
     }



}
